import os
import openpyxl


# 构造生成器函数
def get_excel_name_generator():
    # 获取高一文件夹中的所有.xlsx文件
    dir_name = '高一'
    file_list = os.listdir(dir_name)
    # print(file_list)
    for i in file_list:
        # print(i, type(i))
        # break
        # 拼接路径
        if i.endswith(".xlsx"):
            excel_name = os.path.join(dir_name, i)
            # print(excel_name)
            # break
            yield excel_name


# 读取每一个数据,统计总成绩
def save_total_score(excel_name):
    # excel_name = '02.xlsx'
    wb = openpyxl.load_workbook(excel_name)
    ws = wb.active
    # 最大列
    max_column = ws.max_column + 1
    # 第一行第一列
    ws.cell(1, max_column).value = '总成绩'
    # 每一行的最后一列
    for i in range(2, ws.max_row + 1):
        total_score = (
                ws.cell(i, 4).value +  # 语文
                ws.cell(i, 5).value +  # 数学
                ws.cell(i, 6).value +  # 英语
                ws.cell(i, 7).value +  # 政治
                ws.cell(i, 8).value +  # 历史
                ws.cell(i, 9).value  # 地理
        )
        ws.cell(i, max_column).value = total_score  # 赋值
    # 保存
    wb.save(excel_name)
    print("{}表的总成绩统计成功".format(excel_name))


# 执行代码
if __name__ == '__main__':
    for i in get_excel_name_generator():
        save_total_score(i)
